package sysinit

import (
	"encoding/gob"
	"github.com/astaxie/beego"
	"mbook/models"
	"mbook/utils"
	"path/filepath"
	"strings"
)

/**

 */
func sysinit() {
	gob.Register(models.Member{}) //序列化Member对象,必须在encoding/gob编码解码前进行注册

	// 静态资源路径
	uploads := filepath.Join("./", "uploads")
	// 定义上传静态资源的文件路劲： 127.0.0.1/uploads
	beego.BConfig.WebConfig.StaticDir["/uploads"] = uploads

	// 注册前端使用函数
	registerFunction()
}

/**
todo 未理解
*/
func registerFunction() {
	// 第一个string是参数类型，第二个string是返回值的数据类型
	beego.AddFuncMap("cdnjs", func(p string) string {
		cdn := beego.AppConfig.DefaultString("cdnjs", "")

		// cdn这个配置如果是以/开头和结尾的话
		if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
			return cdn + string(p[1:])
		}
		return ""
	})

	beego.AddFuncMap("cdncss", func(p string) string {
		cdn := beego.AppConfig.DefaultString("cdncss", "")
		if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
			return cdn + string(p[1:])
		}
		if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
			return cdn + "/" + p
		}
		return cdn + p
	})

	beego.AddFuncMap("showImg", utils.ShowImg)

	beego.AddFuncMap("inMap", utils.InMap)
	beego.AddFuncMap("isubstr", utils.Substr)

}
